#include <stdio.h>
#include <stdlib.h>

int num(int n, int m) {
    int* arr = (int*)malloc(n * sizeof(int));
    if (arr == NULL) {
        printf("内存分配失败\n");
        exit(1);
    }
    // 初始化数组，表示所有人的编号
    for (int i = 0; i < n; i++) {
        arr[i] = i + 1;
    }

    int index = 0;
    while (n > 1) {
        index = (index + m - 1) % n;  // 计算出下一个要删除的元素的索引
        printf("淘汰编号：%d\n", arr[index]);

        // 将要删除的元素之后的所有元素向前移动一位
        for (int i = index; i < n - 1; i++) {
            arr[i] = arr[i + 1];
        }

        n--;  // 数组大小减1
    }

    int result = arr[0];
    free(arr);
    return result;
}

int main() {
    int n, m;
    printf("请输入总人数：");
    scanf("%d", &n);
    printf("请输入淘汰的序号：");
    scanf("%d", &m);
    int survivor = num(n, m);
    printf("最后剩下的编号是：%d\n", survivor);
    return 0;
}